package com.monster.dao;

import com.monster.pojo.Album;
import com.monster.pojo.Singer;
import com.monster.pojo.Song;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * Singer类的数据访问层接口
 * @author lym
 */
public interface SingerDao {
    /**
     * 显示所有的歌手，通过热度降序排列
     * @param
     * @return ArrayList<Singer>
     */
    ArrayList<Singer> getAllSingers(int page);
    /**
     * 通过中文模糊查询，通过热度降序排列
     * @param letter
     * @return ArrayList<Singer>
     */
    ArrayList<Singer> getSingersByFuzzy(String letter);
    /**
     * 通过首字母查询，通过热度降序排列
     * @param firstLetter
     * @return ArrayList<Singer>
     */
    ArrayList<Singer> getSingersByFirstLetter(String firstLetter,int page);
    /**
     * 通过歌手ID查询详情
     * @param singerId
     * @return Singer
     */
    Singer getSingersBySingerId(Long singerId);
    /**
     * 通过歌手ID查询歌手歌曲/专辑数量
     * @param singerId
     * @return singer
     */
    Singer songsAlbumsAmount(Long singerId);
    /**
     * 通过歌手名字首字母/地区/性别/流派查询歌手
     * @param firstLetter/area/sex/genre
     * @return ArrayList<Singer>
     */
    ArrayList<Singer> getSingersByOption(String firstLetter, String area, String sex, String genre,int page);
    /**
     * 通过focus_type=歌手 ，focus_id=歌手ID 查询歌手的关注数
     * @param singerId
     * @return
     */
    public int selectFocusBySingerId(Long singerId);

    /**
     * 通过歌手ID  查询歌手的专辑集合
     */
    public List<Album> selectAlbumBySingerId(Long singerId);

    /**
     * 通过歌手地区，查询歌手歌曲
     * @param area,page
     * @return 歌手最新歌曲，歌手不重复
     */

    ArrayList<Singer> getSingersSongsByArea (String area,int page);

    /**
     * 通过歌手地区，查询歌手专辑
     * @param area,page
     * @return 歌手最新歌曲，歌手不重复
     */

    ArrayList<Singer> getSingersAlbumsByArea (String area,int page);

    /**
     * 通过歌手ID  查询歌手的专辑集合
     */
    ArrayList<Song> getSongsBySingerId(Long singerId);
}
